package com.ts.api.module.product.dao;

import com.ts.api.module.channel.entity.po.ChannelUserProductMatchPO;
import com.ts.api.module.product.entity.po.ProductUserMatchPO;
import com.ts.api.module.product.entity.qo.ProductPlanLimitQO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  机构用户匹配持久层
 */
@Mapper
public interface ProductUserMatchDao {

    /**
     *  根据用户id获取匹配计划记录
     *
     *  @param  userId
     *  @return List
     */
    List<ChannelUserProductMatchPO> listProductMatchByUserId(Long userId);

    /**
     *  根据用户id获取本地crm匹配计划记录
     *
     *  @param  userId
     *  @return List
     */
    List<ChannelUserProductMatchPO> listProductMatchLocalCrmByUserId(Long userId);

    /**
     *  插入用户与机构关联数据
     *
     *  @param  channelUserProductMatchPO 实体类
     *  @return int
     */
    int insertUserProductMatch(ChannelUserProductMatchPO channelUserProductMatchPO);

    /**
     *  查询用户与机构关联数据
     *  根据用户主键及主体id主键
     *
     *  @param  userId      用户主键
     *  @param  productId   主体主键
     *  @param  productId   渠道主键
     *  @return int
     */
    int countUserProductMatch(@Param("userId") Long userId, @Param("productId") Long productId, @Param("loanChannelId") Long loanChannelId);

    /**
     *  根据计划查询对象查出当前计划进件总数
     *
     *  @param productPlanLimitQO   查询对象
     *  @return Integer
     */
    Integer countPlanApplyTotal(ProductPlanLimitQO productPlanLimitQO);

    /**
     *  根据用户id查询用户已经匹配到的机构+计划数据
     *
     *  @param  userId   用户id
     *  @return List
     */
    List<ProductUserMatchPO> listByUser(@Param("userId") Long userId);
}
